package com.insigma.business.qrcode.merchant.bff;

import com.insigma.business.qrcode.common.annotation.ApiServiceType;
import com.insigma.business.qrcode.common.template.BasePagingResponse;
import com.insigma.business.qrcode.common.vo.BaseResponse;
import com.insigma.business.qrcode.merchant.dto.CareWelfareMerchantEntryApplyDTO;
import com.insigma.business.qrcode.merchant.dto.CareWelfareMerchantInfoLogDTO;
import com.insigma.business.qrcode.merchant.dto.request.*;
import com.insigma.business.qrcode.soldier.request.BaseGetRequest;
import com.insigma.business.qrcode.welfare.dto.CareWelfareMerchantDiscountDTO;
import com.insigma.business.qrcode.welfare.dto.CareWelfareMerchantInfoDTO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface MerchantEnterBFFProvider {
    @ApiServiceType(value = "merchant.enter.enterApply", name = "入驻申请", desc = "入驻申请审核")
    BaseResponse<Integer> enterApply(final CareWelfareMerchantEntryApplyInsertRequest request);

    @ApiServiceType(value = "merchant.enter.getEnterApplyList", name = "入驻申请列表", desc = "入驻申请列表")
    BasePagingResponse<List<CareWelfareMerchantEntryApplyDTO>> getApplyList(final CareWelfareMerchantEntryApplySearchRequest request);

    @ApiServiceType(value = "merchant.enter.exportApplyList", name = "入驻申请列表导出", desc = "入驻申请列表导出")
    void exportApplyList(HttpServletResponse httpServletResponse, final CareWelfareMerchantEntryApplySearchRequest request);


    @ApiServiceType(value = "merchant.enter.getApplyDetail", name = "入驻申请详情", desc = "入驻申请详情")
    BaseResponse<CareWelfareMerchantEntryApplyDTO> getApplyDetail(final BaseGetRequest baseGetRequest);

    @ApiServiceType(value = "merchant.enter.enterAudit", name = "入驻审核", desc = "入驻审核")
    BaseResponse<Integer> enterAudit(final CareWelfareMerchantEntryApplyUpdateRequest updateRequest);

    @ApiServiceType(value = "merchant.manager.search", name = "商家管理查询", desc = "商家管理查询")
    BasePagingResponse<List<CareWelfareMerchantInfoDTO>> managerSearch(final CareWelfareMerchantInfoSearchRequest searchRequest);

    @ApiServiceType(value = "merchant.manager.getDetail", name = "商家管理查询详情", desc = "商家管理查询详情")
    BaseResponse<CareWelfareMerchantInfoDTO> getManagerDetail(final BaseGetRequest baseGetRequest);

    @ApiServiceType(value = "merchant.manager.update", name = "商家管理修改", desc = "商家管理修改")
    BaseResponse<Integer> managerUpdate(final CareWelfareMerchantInfoUpdateRequest updateRequest);

    @ApiServiceType(value = "merchant.manager.getUpdateLog", name = "商家变动日志", desc = "商家变动日志")
    BasePagingResponse<List<CareWelfareMerchantInfoLogDTO>> getUpdateLog(final CareWelfareMerchantInfoLogSearchRequest careWelfareMerchantInfoLogSearchRequest);

    @ApiServiceType(value = "merchant.manager.publish", name = "商家管理上下线", desc = "上下线")
    BaseResponse<Integer> managerPublish(final CareWelfareMerchantInfoUpdateRequest updateRequest);

    @ApiServiceType(value = "merchant.manager.cancelEnter", name = "取消入驻", desc = "取消入驻")
    BaseResponse<Integer> cancelEnter(final CareWelfareMerchantInfoUpdateRequest updateRequest);

    @ApiServiceType(value = "merchant.out.outApply", name = "商家退出申请", desc = "商家退出申请")
    BaseResponse<Integer> outApply(final CareWelfareMerchantInfoUpdateRequest updateRequest);

    @ApiServiceType(value = "merchant.out.searchOutWait", name = "商家退出审批查询", desc = "商家退出审批查询")
    BasePagingResponse<List<CareWelfareMerchantInfoDTO>> searchOutWait(final CareWelfareMerchantInfoSearchRequest searchRequest);

    @ApiServiceType(value = "merchant.out.outAudit", name = "商家退出审批", desc = "商家退出审批")
    BaseResponse<Integer> outAudit(final CareWelfareMerchantInfoUpdateRequest updateRequest);

    @ApiServiceType(value = "merchant.out.search", name = "商家退出管理查询", desc = "商家管理查询")
    BasePagingResponse<List<CareWelfareMerchantInfoDTO>> outSearch(final CareWelfareMerchantInfoSearchRequest searchRequest);

    @ApiServiceType(value = "merchant.out.getDetail", name = "商家退出管理查询详情", desc = "商家管理查询详情")
    BaseResponse<CareWelfareMerchantInfoDTO> getOutDetail(final BaseGetRequest baseGetRequest);

    @ApiServiceType(value = "merchant.out.reApply", name = "商家退出管理重新入驻", desc = "商家管理重新入驻")
    BaseResponse<Integer> reApply(final CareWelfareMerchantInfoUpdateRequest updateRequest);

    @ApiServiceType(value = "merchant.out.update", name = "商家退出管理修改", desc = "商家管理修改")
    BaseResponse<Integer> outUpdate(final CareWelfareMerchantInfoUpdateRequest updateRequest);


    @ApiServiceType(value = "all.ss.care.welfare.merchant.discount.update", name = "更新商家优惠", desc = "更新商家优惠", opsLog = "老兵优惠")
    BaseResponse<Integer> updateCareWelfareMerchantDiscount(final CareWelfareMerchantDiscountUpdateRequest careWelfareMerchantDiscountUpdateRequest);

    @ApiServiceType(value = "all.ss.care.welfare.merchant.discount.add", name = "新增商家优惠", desc = "新增商家优惠", opsLog = "老兵优惠")
    BaseResponse<String> insertCareWelfareMerchantDiscount(final CareWelfareMerchantDiscountInsertRequest careWelfareMerchantDiscountInsertRequest);

    @ApiServiceType(value = "all.ss.care.welfare.merchant.discount.view", name = "查询单个优惠", desc = "查询单个优惠")
    BaseResponse<CareWelfareMerchantDiscountDTO> getCareWelfareMerchantDiscount(final BaseGetRequest baseGetRequest);

    @ApiServiceType(value = "all.ss.care.welfare.merchant.discount.search", name = "优惠查询", desc = "优惠查询")
    BasePagingResponse<List<CareWelfareMerchantDiscountDTO>> getCareWelfareMerchantDiscountList(final CareWelfareMerchantDiscountSearchRequest baseGetRequest);


}
